package gestorvideoclub.jdbc;

import gestorvideoclub.Gasto;
import gestorvideoclub.Proveedor;
import gestorvideoclub.Pedido;
import gestorvideoclub.util.*;
import java.util.*;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;

public class GastoJDBC {
    public static void insertarGasto(Gasto gasto){
        String sql = "insert into contabilidad (fecha, importe, descripcion, id_pedido, id_proveedor, tipo) values ";
        sql += " ('"+UtilFecha.fechaMySQL(gasto.getFecha())+"', "+gasto.getImporte()+", ";
        sql += "'"+gasto.getDescripcion()+"', "+gasto.getPedido().getId()+", "+gasto.getProveedor().getIdProveedor();
        sql +=", '"+gasto.getTipo()+"')";

        //System.out.println(sql);
        Connection con = null;
        Statement st = null;

        try{
            con = AccesoDatos.getConexion();
            st = con.createStatement();
            st.executeUpdate(sql);
            st.close();
        }
        catch(Exception e){
            System.out.println("Error a insertar un nuevo gasto "+e.getMessage());
        }
        finally{
            AccesoDatos.cerrarConexion(con);
        }
    }

        public static ArrayList consultarGastoPorFecha(Date fechaInicio, Date fechaFin){
        String sql = "select * from contabilidad where fecha between '"+UtilFecha.fechaMySQL(fechaInicio)+"'";
        sql+= " and '"+UtilFecha.fechaMySQL(fechaFin)+"' and tipo = 'Gasto' order by Id";


        //System.out.println(sql);
        ArrayList<Gasto> lista = new ArrayList<Gasto>();
        Connection con = null;
        Statement st = null;
        ResultSet rs = null;

        try{
            lista = new ArrayList<Gasto>();
            con = AccesoDatos.getConexion();
            st = con.createStatement();
            rs = st.executeQuery(sql);
            while(rs.next()){
                Gasto gasto = new Gasto();
                String tex = rs.getString("fecha");

                gasto.setId(rs.getInt("Id"));
                gasto.setFecha(UtilFecha.obtenerFechaBD(tex));
                gasto.setImporte(rs.getDouble("importe"));
                gasto.setDescripcion(rs.getString("descripcion"));

                Pedido pedido = new Pedido();
                int id = rs.getInt("id_pedido");
                pedido.setId(id);
                //pedido = PedidoJDBC.obtenerPedidoPorCodigo(id);
                gasto.setPedido(pedido);

                Proveedor proveedor = new Proveedor();
                id = rs.getInt("id_proveedor");
                proveedor = ProveedorJDBC.obtenerProveedorPorId(id);
                proveedor.setIdProveedor(id);
                
                gasto.setTipo(rs.getString("tipo"));
                lista.add(gasto);
            }
            rs.close();
            st.close();
        }
        catch(Exception e){
            System.out.println("Error al obtener los gastos  "+e.getMessage());
        }
        finally{
            AccesoDatos.cerrarConexion(con);
        }
        return lista;
    }
}
